from django.http import JsonResponse
from django.views.decorators.http import require_http_methods
from django.views.decorators.csrf import csrf_exempt
from django.contrib.auth.models import User
#from .models import UserRole  # 假设你有一个UserRole模型来管理用户角色
import json
@csrf_exempt  # 如果是前后端分离项目，可能需要这个装饰器
@require_http_methods(["POST"])  # 限定只接受POST请求
def update_user_roles(request):
    print(request)
    try:


        # 获取查询参数  
        user_id = request.GET.get('userid')
        
        # # 获取POST的数据（如果有）
        # post_data = request.POST
        
        # 获取rolelist并转换
        role_list = request.GET.get('rolelist', '').split(',')
        role_list = [int(role) for role in role_list if role]
        print(role_list)
        # 从请求体中获取JSON数据
        # # data = json.loads(request.body)
        # data = request.POST
        # print(user_id)
        # # 获取用户ID和角色列表
        # user_id = data.get('userid')
        # role_list = data.get('rolelist', [])
        
        # 检查必要参数是否存在
        if not user_id:
            return JsonResponse({
                'code': 400,
                'info': '用户ID不能为空',
                'data': {}
            })
        
        # 尝试获取用户
        try:
            #user = User.objects.get(id=user_id)
            user = 1
        except User.DoesNotExist:
            return JsonResponse({
                'code': 404,
                'info': '用户不存在',
                'data': {}
            })
        
        # 更新用户角色
        # 这里的实现取决于你的具体模型设计，以下是两种常见的方式：
        
        # 方法1：如果使用多对多关系
        # user.userrole_set.clear()  # 清除现有角色
        # for role_id in role_list:
        #     UserRole.objects.create(user=user, role_id=role_id)
        
        # 方法2：如果角色存储在用户模型的一个字段中
        # user.roles = role_list
        # user.save()
        
        return JsonResponse({
            'code': 200,
            'info': '角色更新成功',
            'data': {}
        })
    
    except json.JSONDecodeError:
        return JsonResponse({
            'code': 400,
            'info': '无效的JSON数据',
            'data': {}
        })
    except Exception as e:
        return JsonResponse({
            'code': 500,
            'info': f'服务器错误: {str(e)}',
            'data': {}
        })

# 数据模型示例（假设在models.py中定义）
# from django.db import models
# from django.contrib.auth.models import User

# class Role(models.Model):
#     name = models.CharField(max_length=50, unique=True)
#     # 其他角色相关字段

# class UserRole(models.Model):
#     user = models.ForeignKey(User, on_delete=models.CASCADE)
#     role = models.ForeignKey(Role, on_delete=models.CASCADE)